package com.macro.cloud.hystrixservice.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * 负载均衡的配制类
 * @Bean 在Spring框架中@Bean可以将一个方法标记为一个由Spring IOC容器管理的Bean
 * 通过在该方法上面使用@Bean注解，可以告诉Spring容器将方法返回的对象注册为一个bean并可以在应用程序
 * 中进行管理和使用。
 * 通常来说@Bean这个注解都在@Configuration配制类中使用，这样Spring的容器就可以识别并创建这些bean了。
 *
 * @LoadBalanced这个注解标记了restTemplate这个方法，主要的作用就是启动负载均衡的功能。之后就可以在其它
 * 的组件中注入RestTemplate的实例了。
 */
@Configuration
public class RibbonConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
